<?php 
//Config : Les informations personnels de l'instance (log, pass, etc)
require("../../include/config.php");

//API Fonctions : les fonctions fournis de base par l'API
require("../../API/php/fonctions.php");

//Header établie la connection à la base $connection
require("../../API/php/header.php");

//Mode debug
$modeDebug = false;

//Public ou privé (clé obligatoire)
$modePublic = true;

//Mode de sortie text,json,xml,csv
//pour xml et csv $object_retour->data["resultat"] doit contenir qu'un est unique array
$modeSortie = "json";

//Liens de test
// API_RH/phpsql/mysql_getImputTimeSheet.php?milis=123456789&code_user=FRO&date=2014-04-01

//[0][0] = date
//[0][1] = code_imputation
//[0][2] = description
//[0][3] = charge

// IN obligatoire
$arrayInput = array(
    "code_user" => null,
    "date" => null
);

//Récupération des entrants
$arrayValeur = recupInput($arrayInput);

//Object retour minima
// $object_retour->strErreur string
// $object_retour->data  string
// $object_retour->statut  string

//------------------------------------------------------------------
$strSql = "SELECT g.`date`, g.`code_imputation`, '' as 'description', IFNULL(h.`total`,0) as 'charge'
    FROM (
    SELECT i.code_imputation, j.date
    FROM (
        SELECT DISTINCT f.code_imputation
        FROM `".$prefixTable."tab_suivihebdo_enreg` e, `".$prefixTable."tab_suivihebdo_type_activite` f 
        WHERE 1=1 
        AND e.type = f.id 
        AND e.user = '".$arrayValeur["code_user"]."' 
        AND e.date_saisi between DATE_SUB(CONCAT(STR_TO_DATE('".$arrayValeur["date"]."','%Y-%m-%d'), ' 00:00:00'), INTERVAL WEEKDAY(STR_TO_DATE('".$arrayValeur["date"]."','%Y-%m-%d')) DAY) 
            and DATE_ADD(CONCAT(STR_TO_DATE('".$arrayValeur["date"]."','%Y-%m-%d'), ' 00:00:00'), INTERVAL (6 - WEEKDAY(STR_TO_DATE('".$arrayValeur["date"]."','%Y-%m-%d'))) DAY)
    ) i, `affectation` j
    where 1=1
    AND j.date between DATE_SUB(CONCAT(STR_TO_DATE('".$arrayValeur["date"]."','%Y-%m-%d'), ' 00:00:00'), INTERVAL WEEKDAY(STR_TO_DATE('".$arrayValeur["date"]."','%Y-%m-%d')) DAY) 
        and DATE_ADD(CONCAT(STR_TO_DATE('".$arrayValeur["date"]."','%Y-%m-%d'), ' 00:00:00'), INTERVAL (6 - WEEKDAY(STR_TO_DATE('".$arrayValeur["date"]."','%Y-%m-%d'))) DAY)
) g
LEFT JOIN (
    SELECT a.date_saisi, b.code_imputation, SUM(a.charge) as total
    FROM `".$prefixTable."tab_suivihebdo_enreg` a, `".$prefixTable."tab_suivihebdo_type_activite` b 
    WHERE 1=1 
    AND a.type = b.id 
    AND a.user = '".$arrayValeur["code_user"]."' 
    AND a.date_saisi between DATE_SUB(CONCAT(STR_TO_DATE('".$arrayValeur["date"]."','%Y-%m-%d'), ' 00:00:00'), INTERVAL WEEKDAY(STR_TO_DATE('".$arrayValeur["date"]."','%Y-%m-%d')) DAY) 
        and DATE_ADD(CONCAT(STR_TO_DATE('".$arrayValeur["date"]."','%Y-%m-%d'), ' 00:00:00'), INTERVAL (6 - WEEKDAY(STR_TO_DATE('".$arrayValeur["date"]."','%Y-%m-%d'))) DAY)
    GROUP BY date_saisi, b.code_imputation
) h
ON h.code_imputation = g.code_imputation AND h.date_saisi = g.date
ORDER BY g.date asc, g.code_imputation desc
;";
// On envois la requète
$req = $connection->prepare($strSql);

if($req->execute()){
    // On indique que nous utiliserons les résultats en tant qu'objet
    $req->setFetchMode(PDO::FETCH_OBJ);

    // On transforme les résultats en tableaux d'objet
    $resultats = new stdClass();
    $resultats->data = $req->fetchAll(PDO::FETCH_OBJ);
    $resultats->nombre = count($resultats->data);

    $object_retour->data["resultat"] = $resultats;
}else{
    $error = 'Erreur SQL:'.print_r($req->errorInfo(), true)." (".$strSql.")";
    $object_retour->strErreur = $error;
}
$req->closeCursor();
//------------------------------------------------------------------

if($modeDebug){
    $strSorti .= ('<br><br><br><br>'.$sql);
}

require("../../API/php/footer.php");
?>